# 给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 
# 
#  你必须在 原地 旋转图像，这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 
# 
#  
# 
#  示例 1： 
#  
#  
# 输入：matrix = [[1,2,3],[4,5,6],[7,8,9]]
# 输出：[[7,4,1],[8,5,2],[9,6,3]]
#  
# 
#  示例 2： 
#  
#  
# 输入：matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]
# 输出：[[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]
#  
# 
#  
# 
#  提示： 
# 
#  
#  n == matrix.length == matrix[i].length 
#  1 <= n <= 20 
#  -1000 <= matrix[i][j] <= 1000 
#  
# 
#  
# 
#  Related Topics 数组 数学 矩阵 👍 1969 👎 0
from typing import List


# leetcode submit region begin(Prohibit modification and deletion)
class Solution:
    def rotate(self, matrix: List[List[int]]) -> None:
        """
        Do not return anything, modify matrix in-place instead.
        """
        m = len(matrix)
        n = len(matrix[0])
        """
        思路：先转置，再反转每一行
        """
        for i in range(m):
            # 注意此处是range（i）,目的是遍历下三角，因为我们只能处理一半数据，如果全处理，则数组数据不会变化
            for j in range(i):
                matrix[i][j],matrix[j][i] = matrix[j][i],matrix[i][j]

        for l in matrix:
            l.reverse()



# leetcode submit region end(Prohibit modification and deletion)
Solution().rotate(matrix = [[1,2,3],[4,5,6],[7,8,9]])